iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 9

Day9 使用Spring Boot整合第三方服務的範例:與其他API進行合作的實作

  • 分享至 

  • xImage
  •  

在現代應用程序開發中,與第三方服務的集成變得越來越常見。使用Spring Boot,可以輕鬆地調用外部API,並將其整合到應用中。在這篇文章中,我們將通過一個實際的範例,介紹如何使用Spring Boot整合第三方服務,並與其他API進行合作。

我們將創建一個簡單的Spring Boot應用,該應用將調用一個開放的公共API來獲取數據。我們將使用JSONPlaceholder這個假數據API,它提供了一些臨時的RESTful接口給開發者測試和學習使用。

首先確保pom.xml中包含以下相關依賴(特別是RestTemplate和JSON處理的依賴):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

在 com.example.demo.model 包中創建一個名為Post.java的類

public class Post {
    private int userId;
    private int id;
    private String title;
    private String body;

    // Getters and Setters
    public int getUserId() { return userId; }
    public void setUserId(int userId) { this.userId = userId; }
    
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    
    public String getBody() { return body; }
    public void setBody(String body) { this.body = body; }
}

在 com.example.demo.service 包中創建一個PostService.java的類:

@Service
public class PostService {
    private final String API_URL = "https://jsonplaceholder.typicode.com/posts";

    private final RestTemplate restTemplate;

    public PostService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public List<Post> getAllPosts() {
        Post[] posts = restTemplate.getForObject(API_URL, Post[].class);
        return Arrays.asList(posts);
    }
}

在 DemoApplication.java 中創建 RestTemplate Bean,這樣我們就可以在服務中注入它

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

在 com.example.demo.controller 包中創建一個名為PostController.java的類

@RestController
@RequestMapping("/api/posts")
public class PostController {

    @Autowired
    private PostService postService;

    @GetMapping
    public List<Post> getPosts() {
        return postService.getAllPosts();
    }
}

在實際開發中,對於第三方API的調用可能會出現各種錯誤,例如連接超時、數據格式錯誤等。為了提高應用的穩定性,需要進行錯誤處理和日誌記錄,可以使用try-catch塊捕獲異常並進行處理:

public List<Post> getAllPosts() {
    try {
        Post[] posts = restTemplate.getForObject(API_URL, Post[].class);
        return Arrays.asList(posts);
    } catch (Exception e) {
        // Log the error and return an empty list or handle it appropriately
        System.err.println("Error fetching posts: " + e.getMessage());
        return Collections.emptyList();
    }
}

在本篇文章中,我們學習了如何利用Spring Boot整合第三方服務,具體示範了如何調用JSONPlaceholder API並將數據返回給前端。這個範例展示了如何使用RestTemplate進行簡單的HTTP請求,同時強調了錯誤處理的重要性


上一篇
Day8 利用Spring Boot整合模板引擎(Thymeleaf):實作簡易的網頁前端顯示
下一篇
Day10 Spring Data JPA簡介:為什麼選擇Spring Data JPA?
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言